/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package interprete;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JTextArea;
/**
 *
 * @author lynx
 */
public class Principal {
    
    private static String cadena = "";
    private static TablaSimbolos tablaSímbolos;
    
    public static void main(String[] args) {
        System.out.println("Escribe tu programa");
        InputStream is;
        switch(args.length){
            case 0:
                is = System.in;
                break;
            case 1:
                try {
                    is = new FileInputStream(args[0]);
                } catch (FileNotFoundException ex) {
                    System.out.println("No se encuentra el archivo "+args[0]);
                    return;
                }
                break;
            default:
                System.out.println("Uso: lenguaje-lynx <archivo>");
                return;
        }
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader (isr);
        String línea = "";
        do{
            try {
                línea = br.readLine();
            } catch (IOException ex) {
                System.err.println(ex.getMessage());
                línea="";
            }
            if(línea!=null) {
                cadena+=línea+"\n";
            }
        }while(línea!=null);
        cadena+="\n";
        System.out.println(cadena);
        tablaSímbolos = new TablaSimbolos();
        Sintaxis análisis = new Sintaxis(cadena, tablaSímbolos, false);
        if(análisis.programa()){
            System.out.println("Compilación correcta\n");
            Sintaxis ejecución = new Sintaxis(cadena, tablaSímbolos, true);
            if(ejecución.programa()){
                System.out.println("Ejecución correcta\n");
            }
        }else{
            System.out.println("Compilación incorrecta\n");
        }
    }
}
